package com.itheima.d2_reflect_test;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;

/*
    对象框架
    目标：保存任意对象的字段和其数据到文件中去
 */
public class ObjectFrame {
    public static void saveObj(Object o) throws Exception {
        BufferedWriter writer = new BufferedWriter(new FileWriter("D:\\source_code\\workspace\\junit-reflect-annotation-app\\src\\com\\itheima\\d2_reflect_test\\user.txt",true));

        //对象.getClass() 获得当前对象的类的class对象
        Class objectClass = o.getClass();

        //getName() 获得当前类的完整路径名称（全称，包含包名）
        //getSimpleName() 获得当前类的类名（简称）
        writer.write("-----------------" + objectClass.getSimpleName() + "-----------------");
        writer.newLine();
        writer.flush();

        for (Field declaredField : objectClass.getDeclaredFields()) {

            //暴力反射 破坏封装性
            declaredField.setAccessible(true);
            //获取成员变量的名称
            String name = declaredField.getName();
            //获取成员变量的值
            Object o1 = declaredField.get(o);

            writer.write("name" + "=" + o1.toString());
            writer.newLine();
            writer.flush();
        }
    }
}
